/*
 * @Author: Wang Xiao
 * @Date: 2020-03-25 08:57:11
 * @Last Modified by:   Wang Xiao
 * @Last Modified time: 2020-03-25 08:57:11
 */

import { saveAs } from 'file-saver';

/**
 * 通过 form 表单提交下载文件
 * 普适性最高，但是不是通过 headers 传递参数
 * @export
 * @param {*} url 提交的 url
 * @param {*} params 附加的参数
 * @param {string} [method='post']
 */
export function downloadByForm(url, params, method = 'post') {
  const iframe = document.createElement('iframe');
  const form = document.createElement('form');

  iframe.style.display = 'none';
  iframe.id = 'down-file-iframe';
  iframe.name = 'down-file-iframe';
  iframe.src = '/blank';
  iframe.onload = function() {
    // 删除该 iframe
    document.body.removeChild(iframe);
  };

  form.style.display = 'none';
  form.target = 'down-file-iframe';

  Object.keys(params).forEach(key => {
    const input = document.createElement('input');

    input.name = key;
    input.value = params[key];

    form.appendChild(input);
  });

  form.method = method;
  form.action = url;

  document.body.appendChild(iframe);
  document.body.appendChild(form);

  // 对该 form 执行提交
  form.submit();
}

/**
 * 通过ajax 请求获取 blob 下载文件
 * 对于大文件可能存在问题
 * @export
 * @param {*} blob
 * @param {*} fileName
 */
export function downloadByAjax(blob, fileName) {
  saveAs(blob, fileName);
}
